package liuzy.mvc.core.util;

/**
 * 共公工具类
 * 
 * @author liuzy
 * @version 2015年5月14日
 */
public class Util {

	/**
	 * 判断一个类是否实现了一个接口
	 * @param clazz
	 * @param impl
	 * @return
	 */
	public static boolean isImpl(Class<?> clazz, Class<?> impl) {
		Class<?>[] impls = clazz.getInterfaces();
		if (impls != null && impls.length > 0) {
			for (Class<?> im : impls) {
				if (im.getName().equals(impl.getName()))
					return true;
			}
		}
		return false;
	}

	/**
	 * 把查询sql剪截为查询总数sql
	 * 
	 * @param sql
	 * @return
	 */
	public static String reSql(String sql) {
		sql = reBlank(sql);
		String sq = sql.substring(sql.indexOf("from") + 5, sql.length());
		int i = sq.lastIndexOf("limit");
		if (i != -1 && sq.substring(i, sq.length()).indexOf(")") == -1) {
			sq = sq.replace(sq.substring(i, sq.length()), "");
		}
		i = sq.lastIndexOf("order by");
		if (i != -1 && sq.substring(i, sq.length()).indexOf(")") == -1) {
			sq = sq.replace(sq.substring(i, sq.length()), "");
		}
		return "select count(*) from " + sq;
	}

	/**
	 * 替换多个连续空格为一个
	 * 
	 * @param sql
	 * @return
	 */
	private static String reBlank(String sql) {
		if (sql.indexOf("  ") == -1) {
			return sql;
		} else {
			return reBlank(sql.replaceAll("  ", " "));
		}
	}
	
}
